<?php
/**
 * Exporta e importa arquivos xls
 * @author Emanuel Melo e Renato Lenz @ PC4 Team
 */
class PC4_Util_Excel extends Model {
	
	public function __construct(){
		parent::__construct();
	}
	/**
	 * Exporta o arquivo
	 * @param array $rs
	 * @param array $cabecalhos
	 * @param string $tipo (xls|csv)
	 * @param string $arquivo
	 * @param string $titulo
	 * @param string $cor_cabecalho
	 * @return string Dados do arquivo
	 */
	public function exporta($rs, $cabecalhos = array(), $tipo = "xls", $arquivo = "planilha", $titulo = "Planilha Exportada", $cor_cabecalho = "#EBEBEB"){
		$this->enviaHeaders($arquivo . '.' . $tipo);
		return $this->exportaTabela($titulo, $rs, $cabecalhos, $tipo, $arquivo, $cor_cabecalho);
		//return $this->load->view("$tipo.php", $dados, true);
	}
	
	/**
	 * Envia os cabeçalhos http
	 * @param string $arquivo
	 */
	public function enviaHeaders($arquivo = "planilha.xls", $contentType = 'application/vnd.ms-xls') {
		header('Expires: 0');
		header('Cache-control: private');
		header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
		header('Content-Description: File Transfer');
		header('Content-Type: ' . $contentType);
//		header('Content-Type: application/save');

		header('Content-disposition: attachment; filename="' . $arquivo . '"');
	}
	
	/**
	 * Exporta tabela
	 * @param string $titulo
	 * @param array(array) $rs
	 * @param array $cabecalhos
	 * @param string $tipo
	 * @param string $arquivo
	 * @param string $cor_cabecalho
	 * @return string Tabela exportada
	 */
	public function exportaTabela($titulo, $rs, $cabecalhos = array(), $tipo = "xls", $arquivo = "planilha", $cor_cabecalho = "#EBEBEB") {
		$dados = array(
			"titulo" => $titulo,
			"cabecalhos" => $cabecalhos,
			"cor_cabecalho" => $cor_cabecalho,
			"rs" => $rs
		);

		return $this->load->view("$tipo.php", $dados, true);
	}
	
	/**
	 * 
	 * @param string $arquivo
	 */
	public function importaCSV($arquivo, $delimitador = ";") {
		$resultado = array(
			"rs" => array(),
			"cabecalhos" => array()
		);
		
		$linhas = file($arquivo);
		
		foreach ($linhas as $linha) {
			$linha = utf8_encode($linha);
			$registros[] = explode($delimitador, trim($linha));
		}
		$resultado['cabecalhos'] = $registros[0];
		unset($registros[0]);
		
		$resultado['rs'] = $registros;
		return $resultado;

	}
	/**
	 * 
	 * @param string $arquivo
	 */
	public function importaXLS($arquivo) {
		$resultado = array(
			"rs" => array(),
			"cabecalhos" => array()
		);
		
		$arquivo = utf8_encode(file_get_contents($arquivo));
		$xml = simplexml_load_string($arquivo);
		
		foreach ($xml->body->table->thead->tr[1] as $linha) {
			$resultado["cabecalhos"][(int) $linha['id']] = (string) $linha->strong;
		}
		foreach ($xml->body->table->tbody->tr as $linha) {
			$registro = array();
			foreach ($linha->td as $valor) {
				$registro[] = (string) $valor;
			}
			$resultado["rs"][] = $registro;
		}
		
		return $resultado;
	}
	
}
?>
